/*----------------------------------------------------------------------------  
 * Name:    Serial.c  
 * Purpose: Low level serial routines for STM32  
 * Version: V1.00  
 *----------------------------------------------------------------------------  
 * This file is part of the uVision/ARM development tools.  
 * This software may only be used under the terms of a valid, current,  
 * end user licence from KEIL for a compatible version of KEIL software  
 * development tools. Nothing else gives you the right to use this software.  
 *  
 * Copyright (c) 2005-2007 Keil Software. All rights reserved.  
 *----------------------------------------------------------------------------*/   
   
#include "stm32f10x_usart.h" 
   
#define USARTx   USART1                           // USART1 is used    
   
/*----------------------------------------------------------------------------  
  Write character to Serial Port  
 *----------------------------------------------------------------------------*/   
int SendChar (int ch)  {   
   
  if (ch == '\n')  {   
    while (!(USARTx->SR & USART_FLAG_TXE));   
    USARTx->DR = 0x0D;   
  }   
  while (!(USARTx->SR & USART_FLAG_TXE));   
  USARTx->DR = (ch & 0x1FF);   
   
  return (ch);   
}   
   
   
/*----------------------------------------------------------------------------  
  Read character from Serial Port   (blocking read)  
 *----------------------------------------------------------------------------*/   
int GetKey (void) {   
   
  while (!(USARTx->SR & USART_FLAG_RXNE));   
   
  return ((int)(USARTx->DR & 0x1FF));   
} 
